EXE:= section2
EXECUTABLE:= $(EXE)

LIBDIR:=
LIBS:=
INCLUDES:=.
SRCDIR:=

CC:=g++
CFLAGS:= -g -Wall -O0  
CPPFLAGS:= $(CFLAGS)
CPPFLAGS+= $(addprefix -I,$(INCLUDES))
CPPFLAGS+= -I.
CPPFLAGS+= -MMD

RM-F:= rm -f

#addsuffix 将当前目录下文件都加上.cpp, 但是SRC_DIR为空，所以返回以为空
#wildcard  将路径到文件名都扩展出来section.cpp,默认如此，如果是有路径就路径/文件名
SRCS:= $(wildcard *.cpp) $(wildcard $(addsuffix /*.cpp, $(SRCDIR)))
#将当前文件下的所有.cpp文件改成.o文件
OBJS:= $(patsubst %.cpp,%.o,$(SRCS))
#将当前所有文件下的.o文件改成.d文件
DEPS:= $(patsubst %.o,%.d,$(OBJS))
#去除$(DEPS)中的$(wildcard $(DEPS))字符串
MISSING_DEPS:= $(filter-out $(wildcard $(DEPS)),$(DEPS))
#echo $(MISSING_DEPS)

.PHONY : all deps objs clean
all:$(EXECUTABLE)
	

deps:$(DEPS)

objs:$(OBJS)
clean:
	@$(RM-F) *.o
	@$(RM-F) *.d
	@$(RM-F) $(EXE)

ifneq ($(MISSING_DEPS),)
$(MISSING_DEPS):
	@$(RM-F) $(patsubst %.d,%.o,$@)
endif
-include $(DEPS)
$(EXECUTABLE) : $(OBJS)
	$(CC) -o $(EXECUTABLE) $(OBJS) $(addprefix -L,$(LIBDIR)) $(addprefix -l,$(LIBS))
